package createpattern.singletonpattern.lazy;

/**
 * 懒汉式2 - 加synchronized锁 - 线程安全
 * 该方式也实现了懒加载效果，同时又解决了线程安全问题。但是在getInstance()方法上添加了
 * synchronized关键字，导致该方法的执行效果特别低。从上面代码我们可以看出，其实就是在
 * 初始化instance的时候才会出现线程安全问题，一旦初始化完成就不存在了。
 * */
public class Singleton2 {
    private Singleton2() {}

    public static Singleton2 instance;

    // 加锁 实现线程安全
    public static synchronized Singleton2 getInstance() {
        if (instance == null) {
            instance = new Singleton2();
        }
        return instance;
    }

}
